import pandas as pd

def process_data(input_new, input_all):
    """主处理流程"""
    try:
        col_mapping = {
            'country': 'COUNTRY', 'Country': 'COUNTRY', '国家': 'COUNTRY',
            'state': 'STATE', 'State': 'STATE', '地区': 'STATE',
            'Radio ID': 'RADIO_ID', 'Callsign': 'CALLSIGN',
            'Name': 'FIRST_NAME', 'City': 'CITY'
        }
        
        df_new = pd.read_excel(input_new).rename(columns=col_mapping)
        df_all = pd.read_excel(input_all).rename(columns=col_mapping)

      
        merged_df = pd.concat([
            df_all,
            df_new[~df_new['RADIO_ID'].isin(df_all['RADIO_ID'])]
        ])

     
        # 处理国家、省字段      
        merged_df.loc[merged_df['COUNTRY'] == '台湾地区', 'STATE'] = merged_df.loc[
            merged_df['COUNTRY'] == '台湾地区', 'STATE'].apply(
            lambda x: x if str(x).startswith('台湾省') else '台湾省'
        )
        merged_df.loc[merged_df['COUNTRY'].isin(['中华人民共和国', '台湾地区']), 'COUNTRY'] = '中国'
        
        # 插入空列并筛选指定列
        merged_df.insert(merged_df.columns.get_loc('FIRST_NAME')+1, 'LAST_NAME', '')
        final_columns = ['RADIO_ID', 'CALLSIGN', 'FIRST_NAME', 'LAST_NAME', 'CITY', 'STATE', 'COUNTRY']
        merged_df = merged_df[final_columns]

        # 国家内容排序但不改变index
        priority_countries = ['中国', '新加坡', '马来西亚']
        merged_df['COUNTRY'] = pd.Categorical(
            merged_df['COUNTRY'],
            categories=priority_countries + sorted(
                [c for c in merged_df['COUNTRY'].unique() if c not in priority_countries]
            ),
            ordered=True
        )
        merged_df = merged_df.sort_values('COUNTRY')

        merged_df.to_csv('stripped.csv', index=False,encoding='GB18030')
        print("处理完成：生成stripped.csv")
        return True
        
    except Exception as e:
        print(f"处理错误: {str(e)}")
        return False

if __name__ == "__main__":
    process_data('all.xlsx', 'chinese.xlsx')#all.xlsx（全部通讯录，英文地区国家名称也是中文），chinese.xlsx（中新马地区通讯录）
